home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / TextCommon.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  16.1 KB  |  405 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextCommon.h
  3.  
  4.      Contains:    Common text types and constants and prototypes for related functions 
  5.  
  6.      Version:    Technology:    Mac OS 8 (Tempo)
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1995-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __TEXTCOMMON__
  19. #define __TEXTCOMMON__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=mac68k
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. /* LocaleIdentifier is an obsolete Copland typedef, will be removed soon*/
  48. typedef UInt32                             LocaleIdentifier;
  49. /* TextEncodingBase type & values */
  50. /* (values 0-32 correspond to the Script Codes defined in Inside Macintosh: Text pages 6-52 and 6-53 */
  51. typedef UInt32                             TextEncodingBase;
  52.  
  53. enum {
  54.                                                                 /* Mac OS encodings*/
  55.     kTextEncodingMacRoman        = 0L,
  56.     kTextEncodingMacJapanese    = 1,
  57.     kTextEncodingMacChineseTrad    = 2,
  58.     kTextEncodingMacKorean        = 3,
  59.     kTextEncodingMacArabic        = 4,
  60.     kTextEncodingMacHebrew        = 5,
  61.     kTextEncodingMacGreek        = 6,
  62.     kTextEncodingMacCyrillic    = 7,
  63.     kTextEncodingMacDevanagari    = 9,
  64.     kTextEncodingMacGurmukhi    = 10,
  65.     kTextEncodingMacGujarati    = 11,
  66.     kTextEncodingMacOriya        = 12,
  67.     kTextEncodingMacBengali        = 13,
  68.     kTextEncodingMacTamil        = 14,
  69.     kTextEncodingMacTelugu        = 15,
  70.     kTextEncodingMacKannada        = 16,
  71.     kTextEncodingMacMalayalam    = 17,
  72.     kTextEncodingMacSinhalese    = 18,
  73.     kTextEncodingMacBurmese        = 19,
  74.     kTextEncodingMacKhmer        = 20,
  75.     kTextEncodingMacThai        = 21,
  76.     kTextEncodingMacLaotian        = 22,
  77.     kTextEncodingMacGeorgian    = 23,
  78.     kTextEncodingMacArmenian    = 24,
  79.     kTextEncodingMacChineseSimp    = 25,
  80.     kTextEncodingMacTibetan        = 26,
  81.     kTextEncodingMacMongolian    = 27,
  82.     kTextEncodingMacEthiopic    = 28,
  83.     kTextEncodingMacCentralEurRoman = 29,
  84.     kTextEncodingMacVietnamese    = 30,
  85.     kTextEncodingMacExtArabic    = 31,                            /* The following use script code 0, smRoman*/
  86.     kTextEncodingMacSymbol        = 33,
  87.     kTextEncodingMacDingbats    = 34,
  88.     kTextEncodingMacTurkish        = 35,
  89.     kTextEncodingMacCroatian    = 36,
  90.     kTextEncodingMacIcelandic    = 37,
  91.     kTextEncodingMacRomanian    = 38,                            /* The following use script code 4, smArabic*/
  92.     kTextEncodingMacFarsi        = 0x8C,                            /* Like MacArabic but uses Farsi digits*/
  93.                                                                 /* The following use script code 7, smCyrillic*/
  94.     kTextEncodingMacUkrainian    = 0x98,                            /* The following use script code 32, smUnimplemented*/
  95.     kTextEncodingMacVT100        = 0xFC,                            /* VT100/102 font from Comm Toolbox: Latin-1 repertoire + box drawing etc*/
  96.                                                                 /* Special Mac OS encodings*/
  97.     kTextEncodingMacHFS            = 0xFF,                            /* Meta-value, should never appear in a table.*/
  98.                                                                 /* Unicode & ISO UCS encodings begin at 0x100*/
  99.     kTextEncodingUnicodeDefault    = 0x0100,                        /* Meta-value, should never appear in a table.*/
  100.     kTextEncodingUnicodeV1_1    = 0x0101,
  101.     kTextEncodingISO10646_1993    = 0x0101,                        /* Code points identical to Unicode 1.1*/
  102.     kTextEncodingUnicodeV2_0    = 0x0103,                        /* New location for Korean Hangul*/
  103.                                                                 /* ISO 8-bit and 7-bit encodings begin at 0x200*/
  104.     kTextEncodingISOLatin1        = 0x0201,                        /* ISO 8859-1*/
  105.     kTextEncodingISOLatin2        = 0x0202,                        /* ISO 8859-2*/
  106.     kTextEncodingISOLatinCyrillic = 0x0205,                        /* ISO 8859-5*/
  107.     kTextEncodingISOLatinArabic    = 0x0206,                        /* ISO 8859-6, = ASMO 708, =DOS CP 708*/
  108.     kTextEncodingISOLatinGreek    = 0x0207,                        /* ISO 8859-7*/
  109.     kTextEncodingISOLatinHebrew    = 0x0208,                        /* ISO 8859-8*/
  110.     kTextEncodingISOLatin5        = 0x0209,                        /* ISO 8859-9*/
  111.                                                                 /* MS-DOS & Windows encodings begin at 0x400*/
  112.     kTextEncodingDOSLatinUS        = 0x0400,                        /* code page 437*/
  113.     kTextEncodingDOSGreek        = 0x0405,                        /* code page 737 (formerly code page 437G)*/
  114.     kTextEncodingDOSBalticRim    = 0x0406,                        /* code page 775*/
  115.     kTextEncodingDOSLatin1        = 0x0410,                        /* code page 850, "Multilingual"*/
  116.     kTextEncodingDOSGreek1        = 0x0411,                        /* code page 851*/
  117.     kTextEncodingDOSLatin2        = 0x0412,                        /* code page 852, Slavic*/
  118.     kTextEncodingDOSCyrillic    = 0x0413,                        /* code page 855, IBM Cyrillic*/
  119.     kTextEncodingDOSTurkish        = 0x0414,                        /* code page 857, IBM Turkish*/
  120.     kTextEncodingDOSPortuguese    = 0x0415,                        /* code page 860*/
  121.     kTextEncodingDOSIcelandic    = 0x0416,                        /* code page 861*/
  122.     kTextEncodingDOSHebrew        = 0x0417,                        /* code page 862*/
  123.     kTextEncodingDOSCanadianFrench = 0x0418,                    /* code page 863*/
  124.     kTextEncodingDOSArabic        = 0x0419,                        /* code page 864*/
  125.     kTextEncodingDOSNordic        = 0x041A,                        /* code page 865*/
  126.     kTextEncodingDOSRussian        = 0x041B,                        /* code page 866*/
  127.     kTextEncodingDOSGreek2        = 0x041C,                        /* code page 869, IBM Modern Greek*/
  128.     kTextEncodingDOSThai        = 0x041D,                        /* code page 874, also for Windows*/
  129.     kTextEncodingDOSJapanese    = 0x0420,                        /* code page 932, also for Windows*/
  130.     kTextEncodingDOSChineseSimplif = 0x0421,                    /* code page 936, also for Windows*/
  131.     kTextEncodingDOSKorean        = 0x0422,                        /* code page 949, also for Windows; Unified Hangul Code*/
  132.     kTextEncodingDOSChineseTrad    = 0x0423,                        /* code page 950, also for Windows*/
  133.     kTextEncodingWindowsLatin1    = 0x0500,                        /* code page 1252*/
  134.     kTextEncodingWindowsANSI    = 0x0500,                        /* code page 1252 (alternate name)*/
  135.     kTextEncodingWindowsLatin2    = 0x0501,                        /* code page 1250, Central Europe*/
  136.     kTextEncodingWindowsCyrillic = 0x0502,                        /* code page 1251, Slavic Cyrillic*/
  137.     kTextEncodingWindowsGreek    = 0x0503,                        /* code page 1253*/
  138.     kTextEncodingWindowsLatin5    = 0x0504,                        /* code page 1254, Turkish*/
  139.     kTextEncodingWindowsHebrew    = 0x0505,                        /* code page 1255*/
  140.     kTextEncodingWindowsArabic    = 0x0506,                        /* code page 1256*/
  141.     kTextEncodingWindowsBalticRim = 0x0507,                        /* code page 1257*/
  142.     kTextEncodingWindowsKoreanJohab = 0x0510,                    /* code page 1361, for Windows NT*/
  143.                                                                 /* Various national standards begin at 0x600*/
  144.     kTextEncodingUS_ASCII        = 0x0600,
  145.     kTextEncodingJIS_X0201_76    = 0x0620,
  146.     kTextEncodingJIS_X0208_83    = 0x0621,
  147.     kTextEncodingJIS_X0208_90    = 0x0622,
  148.     kTextEncodingJIS_X0212_90    = 0x0623,
  149.     kTextEncodingJIS_C6226_78    = 0x0624,
  150.     kTextEncodingGB_2312_80        = 0x0630,
  151.     kTextEncodingGBK_95            = 0x0631,                        /* annex to GB 13000-93; for Windows 95*/
  152.     kTextEncodingKSC_5601_87    = 0x0640,                        /* same as KSC 5601-92 without Johab annex*/
  153.     kTextEncodingKSC_5601_92_Johab = 0x0641,                    /* KSC 5601-92 Johab annex*/
  154.     kTextEncodingCNS_11643_92_P1 = 0x0651,                        /* CNS 11643-1992 plane 1*/
  155.     kTextEncodingCNS_11643_92_P2 = 0x0652,                        /* CNS 11643-1992 plane 2*/
  156.     kTextEncodingCNS_11643_92_P3 = 0x0653,                        /* CNS 11643-1992 plane 3 (was plane 14 in 1986 version)*/
  157.                                                                 /* ISO 2022 collections begin at 0x800*/
  158.     kTextEncodingISO_2022_JP    = 0x0820,
  159.     kTextEncodingISO_2022_JP_2    = 0x0821,
  160.     kTextEncodingISO_2022_CN    = 0x0830,
  161.     kTextEncodingISO_2022_CN_EXT = 0x0831,
  162.     kTextEncodingISO_2022_KR    = 0x0840,                        /* EUC collections begin at 0x900*/
  163.     kTextEncodingEUC_JP            = 0x0920,                        /* ISO 646, 1-byte katakana, JIS 208, JIS 212*/
  164.     kTextEncodingEUC_CN            = 0x0930,                        /* ISO 646, GB 2312-80*/
  165.     kTextEncodingEUC_TW            = 0x0931,                        /* ISO 646, CNS 11643-1992 Planes 1-16*/
  166.     kTextEncodingEUC_KR            = 0x0940,                        /* ISO 646, KS C 5601-1987*/
  167.                                                                 /* Misc standards begin at 0xA00*/
  168.     kTextEncodingShiftJIS        = 0x0A01,                        /* plain Shift-JIS*/
  169.     kTextEncodingKOI8_R            = 0x0A02,                        /* Russian internet standard*/
  170.     kTextEncodingBig5            = 0x0A03,                        /* Big-5 (has variants)*/
  171.     kTextEncodingMacRomanLatin1    = 0x0A04,                        /* Mac OS Roman permuted to align with ISO Latin-1*/
  172.     kTextEncodingHZ_GB_2312        = 0x0A05,                        /* HZ (RFC 1842, for Chinese mail & news)*/
  173.                                                                 /* Other platform encodings*/
  174.     kTextEncodingNextStepLatin    = 0x0B01,                        /* NextStep encoding*/
  175.                                                                 /* EBCDIC & IBM host encodings begin at 0xC00*/
  176.     kTextEncodingEBCDIC_US        = 0x0C01,                        /* basic EBCDIC-US*/
  177.     kTextEncodingEBCDIC_CP037    = 0x0C02,                        /* code page 037, extended EBCDIC (Latin-1 set) for US,Canada...*/
  178.                                                                 /* Special value*/
  179.     kTextEncodingMultiRun        = 0x0FFF,                        /* Multi-encoding text with external run info*/
  180.                                                                 /* The following are older names for backward compatibility*/
  181.     kTextEncodingMacTradChinese    = 2,
  182.     kTextEncodingMacRSymbol        = 8,
  183.     kTextEncodingMacSimpChinese    = 25,
  184.     kTextEncodingMacGeez        = 28,
  185.     kTextEncodingMacEastEurRoman = 29,
  186.     kTextEncodingMacUninterp    = 32
  187. };
  188.  
  189. /* TextEncodingVariant type & values */
  190. typedef UInt32                             TextEncodingVariant;
  191.  
  192. enum {
  193.                                                                 /* Default TextEncodingVariant, for any TextEncodingBase*/
  194.     kTextEncodingDefaultVariant    = 0,                            /* Variants of kTextEncodingMacIcelandic                                                    */
  195.     kMacIcelandicStandardVariant = 0,                            /* 0xBB & 0xBC are fem./masc. ordinal indicators*/
  196.     kMacIcelandicTrueTypeVariant = 1,                            /* 0xBB & 0xBC are fi/fl ligatures*/
  197.                                                                 /* Variants of kTextEncodingMacJapanese*/
  198.     kMacJapaneseStandardVariant    = 0,
  199.     kMacJapaneseStdNoVerticalsVariant = 1,
  200.     kMacJapaneseBasicVariant    = 2,
  201.     kMacJapanesePostScriptScrnVariant = 3,
  202.     kMacJapanesePostScriptPrintVariant = 4,
  203.     kMacJapaneseVertAtKuPlusTenVariant = 5,                        /* Variant options for most Japanese encodings (MacJapanese, ShiftJIS, EUC-JP, ISO 2022-JP)    */
  204.                                                                 /* These can be OR-ed into the variant value in any combination*/
  205.     kJapaneseNoOneByteKanaOption = 0x20,
  206.     kJapaneseUseAsciiBackslashOption = 0x40,                    /* Variants of kTextEncodingMacArabic*/
  207.     kMacArabicStandardVariant    = 0,                            /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Cairo)*/
  208.     kMacArabicTrueTypeVariant    = 1,                            /* 0xC0 is asterisk, 0x2A & 0xAA are multiply signs (e.g. Baghdad)*/
  209.     kMacArabicThuluthVariant    = 2,                            /* 0xC0 is Arabic five-point star, 0x2A & 0xAA are multiply signs*/
  210.     kMacArabicAlBayanVariant    = 3,                            /* 8-spoke asterisk, multiply sign, Koranic ligatures & parens*/
  211.                                                                 /* Variants of kTextEncodingMacFarsi*/
  212.     kMacFarsiStandardVariant    = 0,                            /* 0xC0 is 8-spoke asterisk, 0x2A & 0xAA are asterisk (e.g. Tehran)*/
  213.     kMacFarsiTrueTypeVariant    = 1,                            /* asterisk, multiply signs, Koranic ligatures, geometric shapes*/
  214.                                                                 /* Variants of kTextEncodingMacHebrew*/
  215.     kMacHebrewStandardVariant    = 0,
  216.     kMacHebrewFigureSpaceVariant = 1,                            /* Variants of Unicode & ISO 10646 encodings*/
  217.     kUnicodeNoSubset            = 0,
  218.     kUnicodeNoCompatibilityVariant = 1,
  219.     kUnicodeMaxDecomposedVariant = 2,
  220.     kUnicodeNoComposedVariant    = 3,
  221.     kUnicodeNoCorporateVariant    = 4,                            /* Variants of Big-5 encoding*/
  222.     kBig5_BasicVariant            = 0,
  223.     kBig5_StandardVariant        = 1,                            /* 0xC6A1-0xC7FC: kana, Cyrillic, enclosed numerics*/
  224.     kBig5_ETenVariant            = 2,                            /* adds kana, Cyrillic, radicals, etc with hi bytes C6-C8,F9*/
  225.                                                                 /* The following are older names for backward compatibility*/
  226.     kJapaneseStandardVariant    = 0,
  227.     kJapaneseStdNoVerticalsVariant = 1,
  228.     kJapaneseBasicVariant        = 2,
  229.     kJapanesePostScriptScrnVariant = 3,
  230.     kJapanesePostScriptPrintVariant = 4,
  231.     kJapaneseVertAtKuPlusTenVariant = 5,                        /* kJapaneseStdNoOneByteKanaVariant = 6,    // replaced by kJapaneseNoOneByteKanaOption*/
  232.                                                                 /* kJapaneseBasicNoOneByteKanaVariant = 7,    // replaced by kJapaneseNoOneByteKanaOption    */
  233.     kHebrewStandardVariant        = 0,
  234.     kHebrewFigureSpaceVariant    = 1
  235. };
  236.  
  237. /* TextEncodingFormat type & values */
  238. typedef UInt32                             TextEncodingFormat;
  239.  
  240. enum {
  241.                                                                 /* Default TextEncodingFormat for any TextEncodingBase*/
  242.     kTextEncodingDefaultFormat    = 0,                            /* Formats for Unicode & ISO 10646*/
  243.     kUnicode16BitFormat            = 0,
  244.     kUnicodeUTF7Format            = 1,
  245.     kUnicodeUTF8Format            = 2,
  246.     kUnicode32BitFormat            = 3
  247. };
  248.  
  249. /* TextEncoding type */
  250. typedef UInt32                             TextEncoding;
  251. /* name part selector for GetTextEncodingName*/
  252. typedef UInt32                             TextEncodingNameSelector;
  253.  
  254. enum {
  255.     kTextEncodingFullName        = 0,
  256.     kTextEncodingBaseName        = 1,
  257.     kTextEncodingVariantName    = 2,
  258.     kTextEncodingFormatName        = 3
  259. };
  260.  
  261. /* Types used in conversion */
  262. struct TextEncodingRun {
  263.     ByteOffset                         offset;
  264.     TextEncoding                     textEncoding;
  265. };
  266. typedef struct TextEncodingRun TextEncodingRun;
  267.  
  268. typedef TextEncodingRun *                TextEncodingRunPtr;
  269. typedef const TextEncodingRun *            ConstTextEncodingRunPtr;
  270. struct ScriptCodeRun {
  271.     ByteOffset                         offset;
  272.     ScriptCode                         script;
  273. };
  274. typedef struct ScriptCodeRun ScriptCodeRun;
  275.  
  276. typedef ScriptCodeRun *                    ScriptCodeRunPtr;
  277. typedef const ScriptCodeRun *            ConstScriptCodeRunPtr;
  278. typedef UInt8 *                            TextPtr;
  279. typedef const UInt8 *                    ConstTextPtr;
  280. /* Basic types for Unicode characters and strings: */
  281. typedef UniChar *                        UniCharArrayPtr;
  282. typedef const UniChar *                    ConstUniCharArrayPtr;
  283. /* enums for TextEncoding Conversion routines*/
  284.  
  285. enum {
  286.     kTextScriptDontCare            = -128,
  287.     kTextLanguageDontCare        = -128,
  288.     kTextRegionDontCare            = -128
  289. };
  290.  
  291. /* struct for TECGetInfo*/
  292.  
  293. struct TECInfo {
  294.     UInt16                             format;                        /* format code for this struct*/
  295.     UInt16                             tecVersion;                    /* TEC version in BCD, e.g. 0x0121 for 1.2.1*/
  296.     UInt32                             tecTextConverterFeatures;    /* bitmask indicating TEC features/fixes*/
  297.     UInt32                             tecUnicodeConverterFeatures; /* bitmask indicating UnicodeConverter features/fixes*/
  298.     UInt32                             tecTextCommonFeatures;        /* bitmask indicating TextCommon features/fixes*/
  299.     Str31                             tecTextEncodingsFolderName;    /* localized name of Text Encodings folder (pascal string)*/
  300.     Str31                             tecExtensionFileName;        /* localized name of TEC extension (pascal string)*/
  301. };
  302. typedef struct TECInfo TECInfo;
  303.  
  304. typedef TECInfo *                        TECInfoPtr;
  305. typedef TECInfoPtr *                    TECInfoHandle;
  306. /* Value for TECInfo format code*/
  307.  
  308. enum {
  309.     kTECInfoCurrentFormat        = 1                                /* any future formats will just add fields at the end*/
  310. };
  311.  
  312. /*
  313.    Defined feature/fix bits for tecUnicodeConverterFeatures field
  314.    Bit:                                Meaning if set:
  315.    ----                                ---------------
  316.    kTECKeepInfoFixBit                Unicode Converter no longer ignores other control flags if
  317.                                       kUnicodeKeepInfoBit is set. Bug fix.
  318.    kTECFallbackTextLengthFixBit        Unicode Converter honors the *srcConvLen and *destConvLen
  319.                                       returned by caller-supplied fallback handler for any status
  320.                                       it returns except for kTECUnmappableElementErr (previously
  321.                                       it only honored these values if noErr was returned). Bug fix.
  322. */
  323.  
  324.  
  325. enum {
  326.     kTECKeepInfoFixBit            = 0,
  327.     kTECFallbackTextLengthFixBit = 1
  328. };
  329.  
  330.  
  331. enum {
  332.     kTECKeepInfoFixMask            = 1L << kTECKeepInfoFixBit,
  333.     kTECFallbackTextLengthFixMask = 1L << kTECFallbackTextLengthFixBit
  334. };
  335.  
  336. /* Prototypes for TextEncoding functions*/
  337.  
  338. EXTERN_API( TextEncoding )
  339. CreateTextEncoding                (TextEncodingBase         encodingBase,
  340.                                  TextEncodingVariant     encodingVariant,
  341.                                  TextEncodingFormat     encodingFormat);
  342.  
  343. EXTERN_API( TextEncodingBase )
  344. GetTextEncodingBase                (TextEncoding             encoding);
  345.  
  346. EXTERN_API( TextEncodingVariant )
  347. GetTextEncodingVariant            (TextEncoding             encoding);
  348.  
  349. EXTERN_API( TextEncodingFormat )
  350. GetTextEncodingFormat            (TextEncoding             encoding);
  351.  
  352. EXTERN_API( TextEncoding )
  353. ResolveDefaultTextEncoding        (TextEncoding             encoding);
  354.  
  355. EXTERN_API_C( OSStatus )
  356. GetTextEncodingName                (TextEncoding             iEncoding,
  357.                                  TextEncodingNameSelector  iNamePartSelector,
  358.                                  RegionCode             iPreferredRegion,
  359.                                  TextEncoding             iPreferredEncoding,
  360.                                  ByteCount                 iOutputBufLen,
  361.                                  ByteCount *            oNameLength,
  362.                                  RegionCode *            oActualRegion,
  363.                                  TextEncoding *            oActualEncoding,
  364.                                  TextPtr                 oEncodingName);
  365.  
  366. EXTERN_API( OSStatus )
  367. TECGetInfo                        (TECInfoHandle *        tecInfo);
  368.  
  369.  
  370. EXTERN_API( OSStatus )
  371. UpgradeScriptInfoToTextEncoding    (ScriptCode             iTextScriptID,
  372.                                  LangCode                 iTextLanguageID,
  373.                                  RegionCode             iRegionID,
  374.                                  ConstStr255Param         iTextFontname,
  375.                                  TextEncoding *            oEncoding);
  376.  
  377. EXTERN_API( OSStatus )
  378. RevertTextEncodingToScriptInfo    (TextEncoding             iEncoding,
  379.                                  ScriptCode *            oTextScriptID,
  380.                                  LangCode *                oTextLanguageID,
  381.                                  Str255                 oTextFontname);
  382.  
  383.  
  384.  
  385. #if PRAGMA_STRUCT_ALIGN
  386.     #pragma options align=reset
  387. #elif PRAGMA_STRUCT_PACKPUSH
  388.     #pragma pack(pop)
  389. #elif PRAGMA_STRUCT_PACK
  390.     #pragma pack()
  391. #endif
  392.  
  393. #ifdef PRAGMA_IMPORT_OFF
  394. #pragma import off
  395. #elif PRAGMA_IMPORT
  396. #pragma import reset
  397. #endif
  398.  
  399. #ifdef __cplusplus
  400. }
  401. #endif
  402.  
  403. #endif /* __TEXTCOMMON__ */
  404.  
  405.